package ExceptionTest;
/*
finally面试题
 */
public class FinallyTest2 {
    public static void main(String[] args){
        int result = m();
        System.out.println(result); //100
    }
    /*
    java语法规则(有一些规则是不能破坏的，一旦这么说了，就必须这么做)
        java中有一条这样的规则:
            方法体中的代码必须遵循自上而下顺序依次逐行执行(亘古不变的语法！)
        java中还有一条语法规则
            return语句一旦执行，整个方法必须结束(亘古不变的语法！)
     */
    public static int m(){
        int i = 100;
        try{
            return i;
        }finally{
            i++;
        }
    }
    /*
    为什么不是101呢？以下原因
    上述代码块反编译查看代码执行顺序，执行原理
    public static int m(){
        int i = 100;
        int j = i;
        i++;
        return j;
    }
    以上代码可以看出，并没有违背执行java语法机制
    运用一个临时变量，满足语法
     */
}
